////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  ica_1_0_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef ICA_1_0_0_H
#define ICA_1_0_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define ICA_1_0_0_NAMESPACE_BEGIN namespace ica_1_0_0 {
#define ICA_1_0_0_NAMESPACE_END }

ICA_1_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_ica10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_ica10_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// opg_invalid_output_treatment_calculate
    ///
    /// Tuning Level:  often_tune
    /// Description:   0: Out-of-frame pixel is populated with a predefined value. 1: Out-of-frame pixel is populated using
    ///                duplication.
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 opg_invalid_output_treatment_calculate;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// opg_invalid_output_treatment_y
    ///
    /// Tuning Level:  often_tune
    /// Description:   Y Output sample values for out-of-input-frame pixels, in case calculate (bit 0) is equal to 0.
    /// Default Value: 0
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 opg_invalid_output_treatment_y;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// opg_invalid_output_treatment_cb
    ///
    /// Tuning Level:  often_tune
    /// Description:   Cb Output sample values for out-of-input-frame pixels, in case calculate (bit 0) is equal to 0.
    /// Default Value: 0
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 opg_invalid_output_treatment_cb;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// opg_invalid_output_treatment_cr
    ///
    /// Tuning Level:  often_tune
    /// Description:   Cr Output sample values for out-of-input-frame pixels, in case calculate (bit 0) is equal to 0.
    /// Default Value: 0
    /// Range:         [0, 1023]
    /// Bit Depth:     10u
    /// Conversion:    No Conversion needed
    /// Notes:         Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 opg_invalid_output_treatment_cr;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// distorted_input_to_undistorted_ldc_grid_valid
    ///
    /// Tuning Level:  must_tune
    /// Description:   is grid valid.
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 distorted_input_to_undistorted_ldc_grid_valid;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// undistorted_to_lens_distorted_output_ld_grid_valid
    ///
    /// Tuning Level:  must_tune
    /// Description:   is grid valid.
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         Constant: no dynamic configuration even when control variable change.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 undistorted_to_lens_distorted_output_ld_grid_valid;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// ica10_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct ica10_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// y_interpolation_type
    ///
    /// Tuning Level:  often_tune
    /// Description:   0: 4x4 kernel. 1: Bi-linear (2x2).
    /// Default Value: 0
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Conversion:    No Conversion needed
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                                              y_interpolation_type;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// ctc_grid_x_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   Grid value for x.
    /// Default Value: 0
    /// Range:         [-65536, 65535]
    /// Bit Depth:     17s, Q3
    /// Length:        829
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct ctc_grid_x_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// ctc_grid_x - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0
        /// Length:        829
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT ctc_grid_x[829];
    } ctc_grid_x_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// ctc_grid_y_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   Grid value for y.
    /// Default Value: 0
    /// Range:         [-65536, 65535]
    /// Bit Depth:     17s, Q3
    /// Length:        829
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct ctc_grid_y_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// ctc_grid_y - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0
        /// Length:        829
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT ctc_grid_y[829];
    } ctc_grid_y_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// opg_interpolation_lut_0_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   LUT(0).
    /// Default Value: 0,-60,-113,-158,-196,-228,-254,-273,-288,-298,-303,-303,-300,-293,-284,-271
    /// Range:         [-8192, 8191]
    /// Bit Depth:     14s
    /// Length:        16
    /// Conversion:    No Conversion needed
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct opg_interpolation_lut_0_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// opg_interpolation_lut_0 - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 0,-60,-113,-158,-196,-228,-254,-273,-288,-298,-303,-303,-300,-293,-284,-271
        /// Length:        16
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT opg_interpolation_lut_0[16];
    } opg_interpolation_lut_0_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// opg_interpolation_lut_1_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   LUT(1).
    /// Default Value: 2304,4086,4058,4011,3948,3869,3777,3670,3552,3423,3284,3136,2980,2818,2651,2479
    /// Range:         [-8192, 8191]
    /// Bit Depth:     14s
    /// Length:        16
    /// Conversion:    No Conversion needed
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct opg_interpolation_lut_1_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// opg_interpolation_lut_1 - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 2304,4086,4058,4011,3948,3869,3777,3670,3552,3423,3284,3136,2980,2818,2651,2479
        /// Length:        16
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT opg_interpolation_lut_1[16];
    } opg_interpolation_lut_1_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// opg_interpolation_lut_2_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   LUT(2) .
    /// Default Value: -256,72,159,259,372,497,632,776,928,1087,1253,1422,1596,1772,1950,2127
    /// Range:         [-8192, 8191]
    /// Bit Depth:     14s
    /// Length:        16
    /// Conversion:    No Conversion needed
    /// Notes:         Nearest neighbor interpolation: discrete values allowed.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct opg_interpolation_lut_2_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// opg_interpolation_lut_2 - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: -256,72,159,259,372,497,632,776,928,1087,1253,1422,1596,1772,1950,2127
        /// Length:        16
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT opg_interpolation_lut_2[16];
    } opg_interpolation_lut_2_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// distorted_input_to_undistorted_ldc_grid_x_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   Grid value for x.
    /// Default Value: 0
    /// Range:         [-65536, 65535]
    /// Bit Depth:     17s, Q3
    /// Length:        829
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct distorted_input_to_undistorted_ldc_grid_x_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// distorted_input_to_undistorted_ldc_grid_x - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0
        /// Length:        829
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT distorted_input_to_undistorted_ldc_grid_x[829];
    } distorted_input_to_undistorted_ldc_grid_x_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// distorted_input_to_undistorted_ldc_grid_y_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   Grid value for y.
    /// Default Value: 0
    /// Range:         [-65536, 65535]
    /// Bit Depth:     17s, Q3
    /// Length:        829
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct distorted_input_to_undistorted_ldc_grid_y_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// distorted_input_to_undistorted_ldc_grid_y - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0
        /// Length:        829
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT distorted_input_to_undistorted_ldc_grid_y[829];
    } distorted_input_to_undistorted_ldc_grid_y_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// undistorted_to_lens_distorted_output_ld_grid_x_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   Grid value for x.
    /// Default Value: 0
    /// Range:         [-65536, 65535]
    /// Bit Depth:     17s, Q3
    /// Length:        829
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct undistorted_to_lens_distorted_output_ld_grid_x_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// undistorted_to_lens_distorted_output_ld_grid_x - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0
        /// Length:        829
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT undistorted_to_lens_distorted_output_ld_grid_x[829];
    } undistorted_to_lens_distorted_output_ld_grid_x_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// undistorted_to_lens_distorted_output_ld_grid_y_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   Grid value for y.
    /// Default Value: 0
    /// Range:         [-65536, 65535]
    /// Bit Depth:     17s, Q3
    /// Length:        829
    /// Conversion:    No Conversion needed
    /// Notes:         Linear interpolation.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct undistorted_to_lens_distorted_output_ld_grid_y_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// undistorted_to_lens_distorted_output_ld_grid_y - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0
        /// Length:        829
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT undistorted_to_lens_distorted_output_ld_grid_y[829];
    } undistorted_to_lens_distorted_output_ld_grid_y_tab;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_ica10_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_ica10_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// ica10_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ica10_rgn_dataType  ica10_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_ica10_lens_zoom_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_ica10_lens_zoom_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lens_zoom_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type lens_zoom_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lens_zoom_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct lens_zoom_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_ica10_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_ica10_aec_dataCount;
        UINT32                  mod_ica10_aec_dataID;
        mod_ica10_aec_dataType* mod_ica10_aec_data;
    } lens_zoom_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_ica10_lens_posn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_ica10_lens_posn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lens_posn_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type lens_posn_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// lens_posn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct lens_posn_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_ica10_lens_zoom_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                        mod_ica10_lens_zoom_dataCount;
        UINT32                        mod_ica10_lens_zoom_dataID;
        mod_ica10_lens_zoom_dataType* mod_ica10_lens_zoom_data;
    } lens_posn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_ica10_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_ica10_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_ica10_lens_posn_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                        mod_ica10_lens_posn_dataCount;
    UINT32                        mod_ica10_lens_posn_dataID;
    mod_ica10_lens_posn_dataType* mod_ica10_lens_posn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_ica10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_ica10Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type ctc_transform_grid_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_lens_position, control_lens_zoom, control_gain
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_lens_position, control_lens_zoom, control_gain
        /// Length:        3
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_lens_position = 0,
            control_lens_zoom     = 1,
            control_lux_idx       = 2,
            control_gain          = 3
        } control_var_type[3];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_gain
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type aec_exp_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_ica10_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_ica10_reserveType chromatix_ica10_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_ica10_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_ica10_coreType    chromatix_ica10_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_ica10TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_ica10TypeClass : public ParameterModule, public chromatix_ica10Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 1;
    static const UINT16 MINOR = 0;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_ica10TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_ica10TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_ica10TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_ica10_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_ica10_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ica10_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_ctc_grid_x_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_ctc_grid_x_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::ctc_grid_x_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_ctc_grid_y_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_ctc_grid_y_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::ctc_grid_y_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_opg_interpolation_lut_0_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_opg_interpolation_lut_0_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::opg_interpolation_lut_0_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_opg_interpolation_lut_1_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_opg_interpolation_lut_1_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::opg_interpolation_lut_1_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_opg_interpolation_lut_2_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_opg_interpolation_lut_2_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::opg_interpolation_lut_2_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_distorted_input_to_undistorted_ldc_grid_x_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_distorted_input_to_undistorted_ldc_grid_x_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::distorted_input_to_undistorted_ldc_grid_x_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_distorted_input_to_undistorted_ldc_grid_y_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_distorted_input_to_undistorted_ldc_grid_y_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::distorted_input_to_undistorted_ldc_grid_y_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_undistorted_to_lens_distorted_output_ld_grid_x_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_undistorted_to_lens_distorted_output_ld_grid_x_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::undistorted_to_lens_distorted_output_ld_grid_x_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load ica10_rgn_dataType_undistorted_to_lens_distorted_output_ld_grid_y_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadica10_rgn_dataType_undistorted_to_lens_distorted_output_ld_grid_y_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        ica10_rgn_dataType::undistorted_to_lens_distorted_output_ld_grid_y_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_ica10_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_ica10_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_ica10_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_ica10_lens_zoom_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_ica10_lens_zoom_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_ica10_lens_zoom_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_ica10_lens_zoom_dataType_lens_zoom_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_ica10_lens_zoom_dataType_lens_zoom_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_ica10_lens_zoom_dataType::lens_zoom_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_ica10_lens_posn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_ica10_lens_posn_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_ica10_lens_posn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_ica10_lens_posn_dataType_lens_posn_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_ica10_lens_posn_dataType_lens_posn_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_ica10_lens_posn_dataType::lens_posn_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_ica10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_ica10_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ica10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_ica10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_ica10Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ica10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ica10Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ica10Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ica10Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_ica10Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_ica10_lens_zoom_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_ica10_lens_zoom_dataType(
        mod_ica10_lens_zoom_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_ica10_lens_zoom_dataType_lens_zoom_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_ica10_lens_zoom_dataType_lens_zoom_dataStruct(
        mod_ica10_lens_zoom_dataType::lens_zoom_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_ica10_lens_posn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_ica10_lens_posn_dataType(
        mod_ica10_lens_posn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_ica10_lens_posn_dataType_lens_posn_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_ica10_lens_posn_dataType_lens_posn_dataStruct(
        mod_ica10_lens_posn_dataType::lens_posn_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_ica10_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_ica10_coreType(
        chromatix_ica10_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_ica10Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_ica10Type(
        chromatix_ica10Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_ica10TypeClass

ICA_1_0_0_NAMESPACE_END
#endif // ICA_1_0_0_H

